package com.wwu.system.entity.server;

import cn.hutool.core.util.NumberUtil;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;

/**
 * 服务器CPU信息实体类
 * @author 一蓑烟雨
 * @version 1.0.0
 * @date 2022-05-17 18:41
 **/
@Data
@Accessors(chain = true)
@ApiModel(value="Cpu:服务器CPU信息实体", description="服务器CPU信息实体")
public class Cpu implements Serializable{
    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "CPU核心数")
    private int cpuNum;

    @ApiModelProperty(value = "CPU总使用时间")
    private double totalUsedTime;

    @ApiModelProperty(value = "CPU内核态使用率(%)")
    private double sysUsedRate;

    @ApiModelProperty(value = "CPU用户态使用率(%)")
    private double userUsedRate;

    @ApiModelProperty(value = "CPU等待率(%)")
    private double cpuWaitRate;

    @ApiModelProperty(value = "CPU空闲率(%)")
    private double cpuIdleRate;

    /** 自定义CPU总使用时间(分钟)get方法 */
    public double getTotalUsedRate() {
        return NumberUtil.round(NumberUtil.mul(totalUsedTime,100),2).doubleValue();
    }

    /** 自定义CPU总使用时间(分钟)get方法 */
    public double getSysUsedRate() {
        return NumberUtil.round(NumberUtil.mul(sysUsedRate/totalUsedTime,100),2).doubleValue();
    }

    /** 自定义CPU用户使用率get方法 */
    public double getUserUsedRate() {
        return NumberUtil.round(NumberUtil.mul(userUsedRate/totalUsedTime,100),2).doubleValue();
    }

    /** 自定义CPU当前等待率get方法 */
    public double getCpuWaitRate() {
        return NumberUtil.round(NumberUtil.mul(cpuWaitRate/totalUsedTime,100),2).doubleValue();
    }

    /** 自定义CPU当前空闲率get方法 */
    public double getCpuIdleRate() {
        return NumberUtil.round(NumberUtil.mul(cpuIdleRate/totalUsedTime,100),2).doubleValue();
    }
}
